// background.js - 修复版本
console.log('🚚 物流面单导出工具已加载');

// 增强错误处理
chrome.runtime.onInstalled.addListener(() => {
    console.log('🚚 物流面单导出工具已安装');

    // 设置默认配置
    chrome.storage.local.set({
        autoUncheckPacking: true,
        processDelay: 3
    });
});

// 处理安装后的首次运行
chrome.runtime.onStartup.addListener(() => {
    console.log('🚚 物流面单导出工具已启动');
});

// 监听来自content script的消息 - 修复版本
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
    console.log('📩 Background: 收到消息:', message);

    if (message.action === 'closeAllPrintPages') {
        console.log('📩 Background: 收到关闭请求，开始关闭所有打印页面');
        console.log('📩 来源URL:', message.sourceUrl);

        // 异步执行关闭操作
        //closeAllPrintPages();

        document.dispatchEvent(new KeyboardEvent('keydown', {key: 'Escape', keyCode: 27}));
        console.log('ESC 已按下');

        // 对于Manifest V3，建议返回true以保持消息通道（如果需要异步响应）
        // 但既然您不需要响应，可以返回false
        return true;
    }
});

// 关闭所有打印页面
async function closeAllPrintPages() {
    try {
        console.log('🔄 Background: 开始遍历标签页...');

        // 获取所有标签页
        const tabs = await chrome.tabs.query({});
        console.log(`📊 Background: 共找到 ${tabs.length} 个标签页`);

        // 筛选出打印页面
        const printTabs = tabs.filter(tab => {
            const isPrintPage = tab.url && tab.url.startsWith('chrome://print/');
            if (isPrintPage) {
                console.log(`🎯 找到打印页面: ID=${tab.id}, URL=${tab.url}`);
            }
            return isPrintPage;
        });

        console.log(`🎯 Background: 发现 ${printTabs.length} 个打印页面`);

        if (printTabs.length === 0) {
            console.log('ℹ️ Background: 没有找到打印页面');
            return;
        }

        // 批量关闭打印页面
        const tabIds = printTabs.map(tab => tab.id);

        chrome.tabs.remove(tabIds).then(() => {
            console.log(`✅ Background: 成功关闭 ${printTabs.length} 个打印页面`);
        }).catch(error => {
            console.log('❌ Background: 批量关闭失败，尝试逐个关闭:', error);

            // 批量失败时，尝试逐个关闭
            closeTabsOneByOne(printTabs);
        });

    } catch (error) {
        console.log('💥 Background: 关闭过程中出错:', error);
    }
}

// 逐个关闭标签页
function closeTabsOneByOne(printTabs) {
    let closedCount = 0;

    printTabs.forEach(tab => {
        chrome.tabs.remove(tab.id).then(() => {
            closedCount++;
            console.log(`✅ Background: 成功关闭标签页 ${tab.id} (${closedCount}/${printTabs.length})`);
        }).catch(error => {
            console.log(`❌ Background: 关闭标签页 ${tab.id} 失败:`, error);
        });
    });
}


console.log('🚀 Background: 物流面单导出工具准备就绪');
